/**
 *
 *  @file Terminals.h
 *
 *	@author calle
 *	@date 11 jan 2012
 *
 *
 */

#ifndef TERMINALS_H_
#define TERMINALS_H_

#include <Interfaces/Enumeration.h>

/**
 * \class Terminals Terminals.h <Generator/Terminals.h>
 *
 * \brief Enumeration class for terminals
 *
 * Terminals are those that terminate an expression
 * these are for now.
 *   - Constants
 *   - Ident's
 *
 *   \ingroup Enumerations
 */
class Terminals: public Enumeration<Terminals> {
public:
	Terminals(const char* image);
	Terminals();
	virtual ~Terminals();

	/**
	 * \brief Ident's are identification variables
	 *
	 * A Ident has both a name and a type.
	 */

	const static Terminals IDENT;

	/**
	 * \brief Constants are constant types.
	 */
	const static Terminals CONSTANT;

	/**
	 * \brief Creates Random Terminals based.
	 *
	 */
	static Terminals getRandomTerminal();
};

#endif /* TERMINALS_H_ */

